<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>

  // 需求：根据现有对象的现有属性，添加访问器和控制器
  // const origin = {
  //   name:"admin",
  //   age:19,
  //   sex:"男"
  // }

  // Object.defineProperty(要定义属性的对象, 属性名, 配置对象)

  // const result = {};
  // Object.defineProperty( result, "name", {
  //   get: function(){
  //     console.log("正在访问name属性")
  //     return origin.name;
  //   },
  //   set: function(val){
  //     console.log("正在修改name属性为" + val)
  //     origin.name = val;
  //   }
  // } )
  // console.log( result );

  // console.log( result.name )
  // result.name = "root"
  // console.log( result.name )

  // =============
  
  // const origin = {
  //   name:"admin",
  //   age:19,
  //   sex:"男",
  //   abc:123,
  //   qwe:"hello",
  //   zxc:"heiheieei"
  // }

  // const result = {};
  // for(let i in origin){
  //   Object.defineProperty( result, i, {
  //     get: function(){
  //       console.log("正在访问"+ i +"属性")
  //       return origin[i];
  //     },
  //     set: function(val){
  //       console.log("正在修改"+ i +"属性为" + val)
  //       origin[i] = val;
  //     }
  //   } )
  // }

  // // 缺陷：无法劫持将来添加的属性
  // origin.asd = "world";

  // console.log( result );

  // console.log( result.name )
  // result.name = "root"
  // console.log( result.name )

  // console.log( result.age )
  // result.age = 30
  // console.log( result.age )

  // console.log( result.sex )
  // result.sex = "女"
  // console.log( result.sex )

  // =============

  const obj = {
    name:"admin"
  };

  Object.defineProperty(obj, "msg", {
    value: "hello",
    writable: true,
    enumerable: true
  })

  console.log(obj);
  console.log(obj.msg);
  obj.msg = "world";
  console.log(obj.msg);

  for(let i in obj){
    console.log(i);
  }

  

  



</script>
</html>